package com.kurt.repository;

import com.kurt.entity.SysDriver;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

/**
 * 驾驶员Repository接口
 * 提供驾驶员数据访问方法
 */
@Repository
public interface SysDriverRepository extends JpaRepository<SysDriver, Long>, JpaSpecificationExecutor<SysDriver> {

    /**
     * 根据身份证号查找驾驶员
     *
     * @param idCard 身份证号
     * @return 驾驶员信息
     */
    Optional<SysDriver> findByIdCard(String idCard);

    /**
     * 根据驾驶证号查找驾驶员
     *
     * @param driverLicense 驾驶证号
     * @return 驾驶员信息
     */
    Optional<SysDriver> findByDriverLicense(String driverLicense);

    /**
     * 根据身份证号和ID查找驾驶员（排除指定ID）
     *
     * @param idCard 身份证号
     * @param id     排除的驾驶员ID
     * @return 驾驶员信息
     */
    Optional<SysDriver> findByIdCardAndIdNot(String idCard, Long id);

    /**
     * 根据驾驶证号和ID查找驾驶员（排除指定ID）
     *
     * @param driverLicense 驾驶证号
     * @param id            排除的驾驶员ID
     * @return 驾驶员信息
     */
    Optional<SysDriver> findByDriverLicenseAndIdNot(String driverLicense, Long id);

    /**
     * 根据组织ID查找驾驶员列表
     *
     * @param organizationId 组织ID
     * @return 驾驶员列表
     */
    List<SysDriver> findByOrganizationId(Long organizationId);

    /**
     * 根据状态查找驾驶员列表
     *
     * @param status 状态
     * @return 驾驶员列表
     */
    List<SysDriver> findByStatus(Integer status);

}
